﻿using QuanLyPhongMach.Model;
using QuanLyPhongMach.Platform;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using QuanLyPhongMach.Context;

namespace QuanLyPhongMach.View
{
    /// <summary>
    /// Interaction logic for WBenh.xaml
    /// </summary>
    public partial class WBenh : Page
    {
        private CBenhContext benhContext;

        public WBenh()
        {
            InitializeComponent();
            benhContext = new CBenhContext(CConstant.CONNECTION);
            try
            {
                TaoBangMoi();
                viewBenh.ItemsSource = benhContext.LayDanhSachTatCa();
            }
            catch
            {

            }
        }

        #region EVENT

        private void btnThemMoi_Click(object sender, RoutedEventArgs e)
        {
            LamMoi();
        }

        private void btnLuu_Click(object sender, RoutedEventArgs e)
        {
            if (txtTenLoaiBenh.IsEnabled)
            {
                if (txtMaLoaiBenh.Text == benhContext.LayMaSoMoi().ToString())
                {
                    Them();
                }

                else
                {
                    Sua();
                }
            }
        }

        private void btnXoa_Click(object sender, RoutedEventArgs e)
        {
            Xoa();
        }

        private void viewBenh_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            Chon();
        }

        private void txtTenLoaiBenh_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                btnLuu.Focus();
            }
        }

        #endregion

        #region FUNCTION
        public void Refresh()
        {
            benhContext.LamMoi();
        }

        private void TaoBangMoi()
        {
            GridView grdView = new GridView();
            grdView.AllowsColumnReorder = true;
            grdView.ColumnHeaderToolTip = "BENH";

            GridViewColumn IDColumn = new GridViewColumn();
            IDColumn.DisplayMemberBinding = new Binding("MaLoaiBenh");
            IDColumn.Header = "Mã Loại Bệnh";
            IDColumn.Width = 120;
            grdView.Columns.Add(IDColumn);

            GridViewColumn nameColumn = new GridViewColumn();
            nameColumn.DisplayMemberBinding = new Binding("TenBenh");
            nameColumn.Header = "Tên Loại Bệnh";
            nameColumn.Width = 120;
            grdView.Columns.Add(nameColumn);

            viewBenh.View = grdView;
            
        }

        private void Them()
        {
            //Thêm
            try
            {
                //Chỉ thêm mới khi ô nhập khác rỗng
                if (txtTenLoaiBenh.Text != "")
                {
                    benhContext.Them(new CBenh(txtTenLoaiBenh.Text));
                    MessageBox.Show("Lưu Thành Công!", "Thông Báo", MessageBoxButton.OK, MessageBoxImage.Information);
                    viewBenh.ItemsSource = benhContext.LayDanhSachTatCa();
                }
                else
                {
                    MessageBox.Show("Không được để trống ô Tên Loại Bệnh", "Thông Báo", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
            catch
            {
                MessageBox.Show("Lưu Thất Bại!", "Thông Báo", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            LamMoi();
        }

        private void Sua()
        {
            try
            {
                //Sửa
                var result = MessageBox.Show("Bạn Có Chắc Chắn Sửa Không?", "Thông Báo", MessageBoxButton.YesNo, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {
                    benhContext.CapNhat(new CBenh() { MaLoaiBenh = int.Parse(txtMaLoaiBenh.Text), TenBenh = txtTenLoaiBenh.Text });
                    viewBenh.ItemsSource = benhContext.LayDanhSachTatCa();
                    MessageBox.Show("Sửa Thành Công!", "Thông Báo", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
            catch
            {
                MessageBox.Show("Sửa Thất Bại!", "Thông Báo", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void Xoa()
        {
            try
            {
                var result = MessageBox.Show("Bạn Có Chắc Chắn Xóa Không?", "Thông Báo", MessageBoxButton.YesNo, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {
                    //Xóa loại bênh có mã số đang hiện hành
                    benhContext.Xoa(int.Parse(txtMaLoaiBenh.Text));
                    MessageBox.Show("Xóa Thành Công!", "Thông Báo", MessageBoxButton.OK, MessageBoxImage.Information);
                    viewBenh.ItemsSource = benhContext.LayDanhSachTatCa();
                    txtMaLoaiBenh.Clear();
                    txtTenLoaiBenh.Clear();
                    txtTenLoaiBenh.IsEnabled = false;
                    btnXoa.IsEnabled = false;
                }
            }
            catch
            {
                MessageBox.Show("Xóa Thất Bại!", "Thông Báo", MessageBoxButton.OK, MessageBoxImage.Error);

            }
        }

        private void Chon()
        {
            try
            {
                txtTenLoaiBenh.IsEnabled = true;
                btnXoa.IsEnabled = true;
                if (viewBenh.SelectedItem is CBenh)
                {
                    txtMaLoaiBenh.Text = (viewBenh.SelectedItem as CBenh).MaLoaiBenh.ToString();
                    txtTenLoaiBenh.Text = (viewBenh.SelectedItem as CBenh).TenBenh;
                }
            }
            catch { }
        }

        private void LamMoi()
        {
            txtTenLoaiBenh.IsEnabled = true;
            btnXoa.IsEnabled = false;
            txtTenLoaiBenh.Clear();
            txtTenLoaiBenh.Focus();
            txtMaLoaiBenh.Text = benhContext.LayMaSoMoi().ToString();
        }

        #endregion


    }
}
